package com.future;

/**
 * Description: 223. 矩形面积
 *
 * @author weiruibai.vendor
 * Date: 2022/11/1 10:36
 */
public class Solution_223 {

    public static void main(String[] args) {
        //int ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2;
        int ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2;
        System.out.println(computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2));
    }

    public static int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        /**
         * 假设A
         * (ax1,ay2)    (ax2,ay2)
         *
         *
         * (ax1,ay1)    (ax2,ay1)
         *  -----------------------------------
         *  B
         * (bx1,by2)    (bx2,by2)
         *
         *
         * (bx1,by1)    (bx2,by1)
         */
        int A = (ax2 - ax1) * (ay2 - ay1);
        int B = (bx2 - bx1) * (by2 - by1);
        int total = A + B;
        // 检查是否相交
        if (ax1 > bx2 || ax2 < bx1 || ay1 > by2 || ay2 < by1) {
            // 不相交
            return total;
        }
        /**
         * 相交
         * 刚开始转不过弯可以自己画图看规律
         */
        // 左下角坐标
        int x1 = Math.max(ax1, bx1);
        int y1 = Math.max(ay1, by1);
        // 右上角坐标
        int x2 = Math.min(ax2, bx2);
        int y2 = Math.min(ay2, by2);
        return total - (x2 - x1) * (y2 - y1);
    }
}
